package com.example.springbootfoodsafety.contrlloer;


import com.example.springbootfoodsafety.entity.User;
import com.example.springbootfoodsafety.serviceimpl.TestServiceImpl;
import com.example.springbootfoodsafety.util.DateFormatUtils;
import com.example.springbootfoodsafety.util.FileTool;
import com.example.springbootfoodsafety.util.Result;
import com.example.springbootfoodsafety.util.UuId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;


public class Contrlloer {

//
//    @Autowired
//    private TestServiceImpl testService;
//
//    @GetMapping("/Test")
//    public void  test(){
//        System.out.println("get__test");
//
//    }
//    @PostMapping("testRetreb")
//    public String getTest(){
//        return "LU/index";
//    }
//
//    @GetMapping("/getUser")
//    public User getUser(){
//       return testService.getUser();
//    }
//
//    /**
//     * 测试文件上传
//     *
//     * */
//
//    	/*
//    文件上传
//     */
//    @PostMapping("/FileUpload")
//    public String upload(MultipartHttpServletRequest request, HttpServletResponse response) {
//        /*
//        多个文件上传的逻辑也是一个文件一个文件的访问后台，上传文件
//         */
//        System.out.println("进入文件上传功能");
//        //获得当前项目的根路径
//        //方法一、
//        //String basepath = ClassUtils.getDefaultClassLoader().getResource("").getPath();
//        //方法二、
//        //String path = ResourceUtils.getURL("classpath:").getPath();
//        File newfile=null;
//        try{
//            newfile =new File(ResourceUtils.getURL("classpath:").getPath());
//        }
//        catch  (FileNotFoundException e) {
//
//        }
//        // 获得文件：
//        MultipartFile file = request.getFile("file");
//        //获得文件名
//        String filename=file.getOriginalFilename();
//
//        /*
//        实现文件按文件后缀名进行分类
//        */
//        //字符串截取获取后缀名 不含.
//        String type= filename.substring(filename.lastIndexOf(".")+1);
//        //根据文件的类型，指定文件的保存路径
//        String path="";
//        //根据文件后缀名进行判断文件类型
//        switch (type){
//            //文本文件保存
//            case "txt":
//            case "docx":
//            case "doc":
//                path= FileTool.txt_path;
//                break;
//            //图片文件保存
//            case "bmp":
//            case "png":
//            case "gif":
//            case "webp":
//            case "jpeg":
//            case "jpg":
//            case "psd":
//                path=FileTool.image_path;
//                break;
//            //pdf文件保存
//            case "pdf":
//                path=FileTool.pdf_path;
//                break;
//            //文件类型未知，存入文本文件夹
//            default:
//                path=FileTool.txt_path;
//        }
//
//        if (file != null) {
//            //获取当前文件名
//            String fileName = file.getOriginalFilename()==null?"":file.getOriginalFilename();
//            //获取保存文件的时间
//            String currentDateFolder = DateFormatUtils.format(new Date(), "yyyyMMdd");
//            //拼接保存文件地址 暂存到与项目所在的文件夹下
//            //String destFilePath = "D:/uploads" + File.separator + currentDateFolder + File.separator+fileName;
//            //String destFilePath = "D:/uploads"+File.separator+path+File.separator+currentDateFolder+fileName;
//            String destFilePath = newfile.getAbsolutePath()+File.separator+path+File.separator+currentDateFolder+fileName;
//            try {
//                File destFile = new File(destFilePath);
//                //若指定的文件夹不存在，则创建指定文件夹
//                if (!destFile.getParentFile().exists()) {
//                    destFile.getParentFile().mkdirs();
//                }
//                file.transferTo(destFile);
//                // 这里直接返回的服务器上的物理地址，项目中需要根据实际情况自行处理
//                return "ok";
//            } catch (IOException e) {
//                // TODO 异常处理
//                return "error";
//            }
//        }
//        //ApiResult为封装的接口统一返回泛型类，项目中根据实际情况处理
//        return "ok_";
//    }
//    /**
//     * Created by qcl on 2019-06-11
//     * desc: 文件上传
//     */
//    @RestController
//    public class UploadController {
//        //单个文件的上传
//        @PostMapping("/upload")
//        public String upload(MultipartFile uploadFile, HttpServletRequest request) {
//        /*
//         定义文件的存储路径,如下，是在linux和mac上定义的文件路径
//        /private/var/folders/8x/4zvnbqmj1w33cqmzrpygzbth0000gn/T/tomcat-docbase.5206733816001100271.8080/uploadFile
//         */
////            String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
//            String realPath="D:\\JavaPrejcet\\SpringBootFoodSafety\\src\\main\\resources\\static\\uploadFile";
//
//            File dir = new File(realPath);
//            if (!dir.isDirectory()) {//文件目录不存在，就创建一个
//                dir.mkdirs();
//            }
//            try {
//                String add= uploadFile.getOriginalFilename();
//                int i;
//                for(i=add.length()-1;i>0;i--)
//                {
//                    if(add.charAt(i)=='.')
//                        break;
//                }
//                add=add.substring(i, add.length());
//                System.out.println(add);
//                String filename=new UuId().getUUID()+add;
//                //服务端保存的文件对象
//                File fileServer = new File(dir, filename);
//                System.out.println("file文件真实路径:" + fileServer.getAbsolutePath());
//                //2，实现上传
//                uploadFile.transferTo(fileServer);
//                String filePath = request.getScheme() + "://" +
//                        request.getServerName() + ":"
//                        + request.getServerPort()
//                        + "/uploadFile/" + filename;
//                //3，返回可供访问的网络路径
//                return filePath;
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//            return "上传失败";
//        }
//        //多个文件的上传
//        @PostMapping("/uploads")
//        public String uploads(MultipartFile[] uploadFiles, HttpServletRequest request) {
//            //1，对文件数组做判空操作
//            if (uploadFiles == null || uploadFiles.length < 1) {
//                return "文件不能为空";
//            }
//            //2，定义文件的存储路径,
//            String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
//            File dir = new File(realPath);
//            if (!dir.isDirectory()) {//文件目录不存在，就创建一个
//                dir.mkdirs();
//            }
//            try {
//                String filePathS = "";
//                //3，遍历文件数组，一个个上传
//                for (int i = 0; i < uploadFiles.length; i++) {
//                    MultipartFile uploadFile = uploadFiles[i];
//                    String filename = uploadFile.getOriginalFilename();
//                    //服务端保存的文件对象
//                    File fileServer = new File(dir, filename);
//                    System.out.println("file文件真实路径:" + fileServer.getAbsolutePath());
//                    //2，实现上传
//                    uploadFile.transferTo(fileServer);
//                    String filePath = request.getScheme() + "://" +
//                            request.getServerName() + ":"
//                            + request.getServerPort()
//                            + "/uploadFile/" + filename;
//                    filePathS = filePathS + "\n" + filePath;
//                }
//                //4，返回可供访问的网络路径
//                return filePathS;
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//            return "上传失败";
//        }
//    }
////文件与对象同时上传
//@PostMapping("/testUpdate")
//public void testUpdate(@RequestParam MultipartFile uploadFiles,@RequestParam String title,@RequestParam String summary,@RequestParam String body){
//    String filename = uploadFiles.getOriginalFilename();
//    System.out.println(filename);
//    System.out.println(title);
//    System.out.println(body);
//
//
//}




}
